iconhelper: Require passing a cssnode to the constructor
authorBenjamin Otte <otte@redhat.com>
Wed, 9 Dec 2015 17:25:36 +0000 (18:25 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 15 Dec 2015 13:41:16 +0000 (08:41 -0500)
Note that we don't use it yet.

gtk/deprecated/gtkstatusicon.c
gtk/gtkcellrendererpixbuf.c
gtk/gtkentry.c
gtk/gtkiconhelper.c
gtk/gtkiconhelperprivate.h
gtk/gtkimage.c
gtk/gtkspinbutton.c
gtk/gtkstylecontext.c
gtk/gtkstylecontextprivate.h

index e3849746625cffcfab8e287b77f944ef29ce8dff..627a291f5b714d94c1f39e3ee92f66b4ceca2a2a 100644 (file)
@@ -43,6 +43,7 @@
 #include "gtktooltip.h"
 #include "gtkicontheme.h"
 #include "gtklabel.h"
+#include "gtkstylecontextprivate.h"
 #include "gtktypebuiltins.h"
 
 #ifdef GDK_WINDOWING_X11
@@ -1392,7 +1393,7 @@ gtk_status_icon_update_image (GtkStatusIcon *status_icon)
 
   round_size = round_pixel_size (widget, priv->size);
 
-  icon_helper = _gtk_icon_helper_new (widget);
+  icon_helper = gtk_icon_helper_new (gtk_style_context_get_node (gtk_widget_get_style_context (widget)), widget);
   _gtk_icon_helper_set_force_scale_pixbuf (icon_helper, TRUE);
   _gtk_icon_helper_set_definition (icon_helper, priv->image_def);
   _gtk_icon_helper_set_icon_size (icon_helper, GTK_ICON_SIZE_SMALL_TOOLBAR);
index 2201c72c8608ae52456d0e9e0f12092132d70ea5..30dcc1b871e614a2c479c4e51fc1bd443174edc9 100644 (file)
@@ -24,6 +24,7 @@
 #include "gtkicontheme.h"
 #include "gtkintl.h"
 #include "gtkprivate.h"
+#include "gtkstylecontextprivate.h"
 #include "a11y/gtkimagecellaccessible.h"
 
 
@@ -446,7 +447,7 @@ create_icon_helper (GtkCellRendererPixbuf *cellpixbuf,
   GtkCellRendererPixbufPrivate *priv = cellpixbuf->priv;
   GtkIconHelper *helper;
 
-  helper = _gtk_icon_helper_new (widget);
+  helper = gtk_icon_helper_new (gtk_style_context_get_node (gtk_widget_get_style_context (widget)), widget);
   _gtk_icon_helper_set_force_scale_pixbuf (helper, TRUE);
   _gtk_icon_helper_set_definition (helper, priv->image_def);
   if (gtk_image_definition_get_storage_type (priv->image_def) != GTK_IMAGE_PIXBUF)
@@ -580,12 +581,12 @@ gtk_cell_renderer_pixbuf_render (GtkCellRenderer      *cell,
 
       if (is_expanded && priv->pixbuf_expander_open != NULL)
         {
-          icon_helper = _gtk_icon_helper_new (widget);
+          icon_helper = gtk_icon_helper_new (gtk_style_context_get_node (context), widget);
           _gtk_icon_helper_set_pixbuf (icon_helper, priv->pixbuf_expander_open);
         }
       else if (!is_expanded && priv->pixbuf_expander_closed != NULL)
         {
-          icon_helper = _gtk_icon_helper_new (widget);
+          icon_helper = gtk_icon_helper_new (gtk_style_context_get_node (context), widget);
           _gtk_icon_helper_set_pixbuf (icon_helper, priv->pixbuf_expander_closed);
         }
     }
index 31f0effbc5610f67bdf726525c24e44bdddbd891..411abcad07eb3ece20b776921d9aace2c2504d07 100644 (file)
@@ -3256,9 +3256,6 @@ construct_icon_info (GtkWidget            *widget,
   icon_info = g_slice_new0 (EntryIconInfo);
   priv->icons[icon_pos] = icon_info;
 
-  icon_info->icon_helper = _gtk_icon_helper_new (widget);
-  _gtk_icon_helper_set_force_scale_pixbuf (icon_info->icon_helper, TRUE);
-
   widget_node = get_entry_node (widget);
   icon_info->css_node = gtk_css_node_new ();
   gtk_css_node_set_name (icon_info->css_node, I_("image"));
@@ -3267,6 +3264,9 @@ construct_icon_info (GtkWidget            *widget,
   update_icon_style (widget, icon_pos);
   g_object_unref (icon_info->css_node);
 
+  icon_info->icon_helper = gtk_icon_helper_new (icon_info->css_node, widget);
+  _gtk_icon_helper_set_force_scale_pixbuf (icon_info->icon_helper, TRUE);
+
   update_node_ordering (entry);
 
   if (gtk_widget_get_realized (widget))
index b096955a424374e33f6884453cd3b3e723ebdf56..241a400e12744ead1382d99767d18284df7d7573 100644 (file)
@@ -770,11 +770,14 @@ _gtk_icon_helper_get_icon_name (GtkIconHelper *self)
 }
 
 GtkIconHelper *
-_gtk_icon_helper_new (GtkWidget *owner)
+gtk_icon_helper_new (GtkCssNode *node,
+                     GtkWidget  *owner)
 {
+  g_return_val_if_fail (GTK_IS_CSS_NODE (node), NULL);
   g_return_val_if_fail (GTK_IS_WIDGET (owner), NULL);
 
   return g_object_new (GTK_TYPE_ICON_HELPER,
+                       "node", node,
                        "owner", owner,
                        NULL);
 }
index b87e26afd85b5c76c6852fe7e67f129848d7ce4a..1f869d42a75cb7754611b2d44631ac9634771b38 100644 (file)
@@ -68,7 +68,8 @@ struct _GtkIconHelperClass
 
 GType gtk_icon_helper_get_type (void) G_GNUC_CONST;
 
-GtkIconHelper *_gtk_icon_helper_new (GtkWidget *owner);
+GtkIconHelper *gtk_icon_helper_new (GtkCssNode *node,
+                                    GtkWidget  *owner);
 
 void _gtk_icon_helper_clear (GtkIconHelper *self);
 void _gtk_icon_helper_invalidate (GtkIconHelper *self);
index 42249026b7766fe74db7dbfed8e66107d41b9e91..b8530b201f9e9c93f73a1495e60094629b42c2ab 100644 (file)
@@ -419,11 +419,12 @@ gtk_image_init (GtkImage *image)
   image->priv = gtk_image_get_instance_private (image);
   priv = image->priv;
 
+  widget_node = gtk_widget_get_css_node (GTK_WIDGET (image));
   gtk_widget_set_has_window (GTK_WIDGET (image), FALSE);
-  priv->icon_helper = _gtk_icon_helper_new (GTK_WIDGET (image));
+
+  priv->icon_helper = gtk_icon_helper_new (widget_node, GTK_WIDGET (image));
   _gtk_icon_helper_set_icon_size (priv->icon_helper, DEFAULT_ICON_SIZE);
 
-  widget_node = gtk_widget_get_css_node (GTK_WIDGET (image));
   priv->gadget = gtk_css_custom_gadget_new_for_node (widget_node,
                                                      GTK_WIDGET (image),
                                                      gtk_image_get_content_size,
index 35a59ccb4989dd3a2df12434be9a705adc2c2611..88f0008b5061a1fe0cfb96005c20d8a010de7e5f 100644 (file)
@@ -1087,16 +1087,17 @@ gtk_spin_button_panel_draw (GtkSpinButton   *spin_button,
   height = gdk_window_get_height (panel);
   width = gdk_window_get_width (panel);
 
-  icon_helper = _gtk_icon_helper_new (widget);
-  _gtk_icon_helper_set_use_fallback (icon_helper, TRUE);
-
   if (panel == priv->down_panel)
     {
+      icon_helper = gtk_icon_helper_new (priv->down_node, widget);
+      _gtk_icon_helper_set_use_fallback (icon_helper, TRUE);
       gtk_style_context_save_to_node (context, priv->down_node);
       _gtk_icon_helper_set_icon_name (icon_helper, "list-remove-symbolic", GTK_ICON_SIZE_MENU);
     }
   else
     {
+      icon_helper = gtk_icon_helper_new (priv->up_node, widget);
+      _gtk_icon_helper_set_use_fallback (icon_helper, TRUE);
       gtk_style_context_save_to_node (context, priv->up_node);
       _gtk_icon_helper_set_icon_name (icon_helper, "list-add-symbolic", GTK_ICON_SIZE_MENU);
     }
index b4a967e81a6bfdd72b9d7970b2202b682dc8b561..7e8c2a0f7d6aeb817aee19caf9aa74fe7919b26d 100644 (file)
@@ -484,6 +484,12 @@ gtk_style_context_lookup_style (GtkStyleContext *context)
   return gtk_css_node_get_style (context->priv->cssnode);
 }
 
+GtkCssNode*
+gtk_style_context_get_node (GtkStyleContext *context)
+{
+  return context->priv->cssnode;
+}
+
 static GtkStateFlags
 gtk_style_context_push_state (GtkStyleContext *context,
                               GtkStateFlags    state)
index 31f71277e87da3ab5d6b6834f5dd6c454540449c..91ce297cd4d52bab367ca9d758150cf36752914e 100644 (file)
@@ -30,6 +30,7 @@ G_BEGIN_DECLS
 
 GtkStyleContext *gtk_style_context_new_for_node              (GtkCssNode      *node);
 
+GtkCssNode     *gtk_style_context_get_node                   (GtkStyleContext *context);
 void            gtk_style_context_set_id                     (GtkStyleContext *context,
                                                               const char      *id);
 const char *    gtk_style_context_get_id                     (GtkStyleContext *context);